
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import javax.swing.*;

public class Default extends JFrame implements ActionListener
{

    private JLabel LblTitulo;
    private JButton CmdAdicionar, CmdLocalizar, CmdAtualizar, CmdExcluir;
    private ArrayList array = new ArrayList();
    private JTextArea TxtRegistros;

    public Default()
    {

        this.setTitle("Cadastro de Clientes");
        this.setBounds(350, 320, 500, 300);

        Container cp = getContentPane();
        cp.setLayout(null);
        cp.setBackground(new Color(0, 128, 255));

        LblTitulo = new JLabel("<html><b><u><font color='#FFFFFF'>Cadastro de clientes</font></u></b></html>");
        cp.add(LblTitulo);
        LblTitulo.setBounds(180, 10, 120, 30);

        CmdAdicionar = new JButton("Adicionar");
        CmdAdicionar.setBorder(BorderFactory.createBevelBorder(0, Color.GRAY, Color.BLACK));
        CmdAdicionar.setBackground(Color.WHITE);
        cp.add(CmdAdicionar);
        CmdAdicionar.setBounds(10, 60, 100, 30);
        CmdAdicionar.addActionListener(this);

        CmdLocalizar = new JButton("Localizar");
        CmdLocalizar.setBackground(Color.WHITE);
        CmdLocalizar.setBorder(BorderFactory.createBevelBorder(0, Color.GRAY, Color.BLACK));
        cp.add(CmdLocalizar);
        CmdLocalizar.setBounds(115, 60, 120, 30);
        CmdLocalizar.addActionListener(this);

        CmdAtualizar = new JButton("Atualizar");
        CmdAtualizar.setBackground(Color.WHITE);
        CmdAtualizar.setBorder(BorderFactory.createBevelBorder(0, Color.GRAY, Color.BLACK));
        cp.add(CmdAtualizar);
        CmdAtualizar.setBounds(240, 60, 120, 30);
        CmdAtualizar.addActionListener(this);

        CmdExcluir = new JButton("Excluir");
        CmdExcluir.setBackground(Color.WHITE);
        CmdExcluir.setBorder(BorderFactory.createBevelBorder(0, Color.GRAY, Color.BLACK));
        cp.add(CmdExcluir);
        CmdExcluir.setBounds(365, 60, 120, 30);
        CmdExcluir.addActionListener(this);

        TxtRegistros = new JTextArea();
        TxtRegistros.setBackground(Color.WHITE);
        TxtRegistros.setBorder(BorderFactory.createBevelBorder(0, Color.GRAY, Color.BLACK));
        cp.add(TxtRegistros);
        TxtRegistros.setBounds(10, 100, 475, 165);
        TxtRegistros.setEditable(false);

        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    }

    public void actionPerformed(ActionEvent e)
    {

        if (e.getSource() == CmdAdicionar)
        {

            Cliente novo = new Cliente();
            novo.setNome(JOptionPane.showInputDialog("Digite o nome do Cliente"));
            novo.setSexo(JOptionPane.showInputDialog("Digite o sexo do Cliente"));
            novo.setIdade(Integer.parseInt(JOptionPane.showInputDialog("Digite a idade do Cliente")));

            array.add(novo);
            JOptionPane.showMessageDialog(null, "Cliente adicionado com sucesso!");
        }

        if (e.getSource() == CmdLocalizar)
        {
            String vc_pesquisa = JOptionPane.showInputDialog("Digite o nome que você quer procurar!");
            String acumulador = "Foram Encontrados os seguintes resultados:\n\n";
            int contador = 0;

            for (int i = 0; i < array.size(); i++)
            {
                Cliente teste = (Cliente) array.get(i);
                if (teste.getNome().indexOf(vc_pesquisa) != -1)
                {
                    acumulador += "(" + (i + 1) + ") - " + teste.getNome() + "\n";
                    contador += 1;
                }
            }

            JOptionPane.showMessageDialog(null, "Sua pesquisa retornou " + contador + " resultados!");
            if (contador > 0)
            {
                TxtRegistros.setText(acumulador);
            }

        }

        if (e.getSource() == CmdAtualizar)
        {

            if (array.size() > 0)
            {
                int registro;
                registro = getRegistro();

                Cliente alterar = (Cliente) array.get(registro);
                alterar.setNome(JOptionPane.showInputDialog("Digite o nome do cliente"));
                alterar.setSexo(JOptionPane.showInputDialog("Digite o sexo do Cliente"));
                alterar.setIdade(Integer.parseInt(JOptionPane.showInputDialog("Digite a idade do Cliente")));
            }
            else
            {
                JOptionPane.showMessageDialog(null, "Não há nenhum registro!");
            }

        }

        if (e.getSource() == CmdExcluir)
        {

            if (array.size() > 0)
            {

                int registro;
                registro = getRegistro();
                array.remove(registro);//.removeElementAt(registro);
                JOptionPane.showMessageDialog(null, "Índice excluído com sucesso!");

            }
            else
            {
                JOptionPane.showMessageDialog(null, "Não há nenhum registro!");
            }

        }

    }

    private int getRegistro()
    {

        int registro = -1;
        while (registro <= 0)
        {
            try
            {
                registro = Integer.parseInt(JOptionPane.showInputDialog("Digite o indice que você quer editar"));
            }
            catch (Exception e)
            {
                JOptionPane.showMessageDialog(null, "Índice inválido, digite apenas números!");
                registro = -1;
            }

            if (registro > -1)
            {
                if (registro > array.size())
                {
                    JOptionPane.showMessageDialog(null, "Índice inválido, não existe este índice!");
                    registro = -1;
                }
            }
        }
        return registro - 1;
    }

    
}
